September 09, 2021
import sys
si = sys.stdin.readline
n, s = map(int, si().split())
nums = list(map(int, si().split()))
answer = 0
def solve(k, value):
    global answer
    if k == n:
        if value == s:
            answer += 1
    else:
        # k 번째 원소 제외
        solve(k + 1, value)
        # k번째 원소 포함
        value += nums[k]
        solve(k + 1, value)
solve(0, 0)
# 진부분집합이 아닌 경우 제외
if s == 0:
    answer -= 1
print(answer)import sys
n, S = map(int, sys.stdin.readline().split(' '))
nums = list(map(int, sys.stdin.readline().split(' ')))
ans = 0
def rec_func(k, value):
    if k == n:
        global ans
        if value == S:
            ans += 1
    else:
        rec_func(k + 1, value + nums[k])
        rec_func(k + 1, value)
rec_func(0, 0)
if S == 0:
    ans -= 1
print(ans)